每當我們在使用git的時候,我們查看每一條之前自己加入的紀錄:
git log --oneline
這個時候就可以看到自己之前所commit的內容,不過,maybe我們會覺得有點confuse在最前頭的b1a645f是什麼意思,嘿嘿,這個就有趣啦!
我們所看到的這些不知道是什麼的代碼,其實就是每一次commit的紀錄後git所賦予它的編號,它代表“紀錄”,其實有很多的文章,包括之前看過的為自己學Git,都大致上的說:其實這些編號,就像是貼紙一樣。
那....是怎麼樣的貼紙概念??
可以想像一個畫面,就是假如我在同一個分支上,commit了一次內容,這個時候就會產生一個貼紙,指著前面一個貼紙
像是這樣,應該還算好懂吧!
然後,只要我們commit了一次,就會產生一個貼紙,然後他會指著前面的貼紙。版本控制的原理基本上就是源自於這個原理。
在上面可以看到一個東西,叫做HEAD,意思就是你現在正在的分支,總之,如果你轉移了branch,你會看到現在HEAD指著的東西也就不一樣了。
Merge的概念,就有點像是原本的家產被收割了這種感覺,或者換個比較有政治色彩的說法,就是PRC統了ROC,不是啦XD
Merge就是合併....well也對啦,「統」這個字眼就是在搞這件事情,
假設我今天正在master主分支上,我想要合併cat,這個時候指令如下:
git merge cat
這個時候可以回去看檔案,你大概會發現一件事情,就是cat新增的檔案,在master上就會全部都有,But,大家應該會好奇一個問題:
假設我今天merge了cat,那這樣cat會不見嗎?
NONO,並不會。
舉個例吧:
現在MJ是我的主分支:
git merge Julia
然後我要合併Julia這個分支
這個時候MJ這個主分支上就會增加一個Julia的檔案。
如果你去問塔綠班這個問題,應該會有人跳腳,嘻嘻。如果你去問小粉紅這個問題,應該也是一樣XD
其實結果都一樣,但就是名義不一樣,但其實要認真來說,其實要看你要拿這次的合併做什麼?
總之,merge的實際意義,其實意思就像是:「之前只有你有,現在我們都有了!」,merge的指令會確保這一點。
不過說到這裡,大概點到為止啦XD
merge還有一些在合併上的小細節~有機會再寫文章來說吧
鐵人賽